package com.etc.controller;

import com.alibaba.fastjson.JSON;

import com.etc.pojo.user.User;
import com.etc.service.UserService;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.io.PrintWriter;
import java.util.List;


/**用于标注控制层组件
 * Controller 用于标记在一个类上，使用它标记的类就是一个SpringMVC Controller 对象。
 *@RequestMapping用于标注数据访问组件，即DAO组件
 * 分发处理器将会扫描使用了该注解的类的方法，并检测该方法是否使用了@RequestMapping 注解。
 * @Controller 只是定义了一个控制器类，而使用@RequestMapping 注解的方法才是真正处理请求的处理器，这个接下来就会讲到。
 */
@Controller
//用于标注数据访问组件，即DAO组件
@RequestMapping("user")//一次路由
public class UserController {
    /**
     *@Autowired 不需要getter()和setter()方法，Spring也会自动注入
     */
    @Autowired
//   用户的业务操作
    private UserService userService;

    /**
     * 用于标注数据访问组件
     * index跳转页面   字符串读取HttpServletRequest
     * @param request
     * @return
     */
    @RequestMapping("index")//二次路由
    public String index(HttpServletRequest request) {
        //list集合
        List<User> byAll = userService.findByAll();
        //调用
        request.setAttribute("userlist", byAll);

        //返回值index页面
        return "index";
    }
    @RequestMapping("savea")
   public  String save(){
       return "save";
    }

    // save 新增用户  value 属性接受
    @RequestMapping(value = "save", method = RequestMethod.POST)
    public ModelAndView save(User user) {
        //        传入参数查询，返回结果
        ModelAndView modelAndView = new ModelAndView();
        //方法的返回值
        Integer resnhbcvjhgcv0tul = userService.save(user);

        if (resnhbcvjhgcv0tul == 1) {
            //跳转页面
            modelAndView.setViewName("success");
        } else {
            modelAndView.setViewName("404");
        }
//    返回目标对象
        return modelAndView;
    }

    /**
     * 注解映射请求地址
     *删除用户
     * @param id
     * @param out
     */
    @RequestMapping("deleteById")
    public void deleteById(String id, PrintWriter out) {
        Integer integer = userService.deleteById(Integer.parseInt(id));
        if (integer == 1) {
            out.print(1);
        } else {
            out.print(2);
        }
    }


    @RequestMapping("findById")
    public void findById(String id,PrintWriter out){
        User byId = userService.findById(Integer.parseInt(id));
        String s = JSON.toJSONString(byId);
        out.print(s);
    }




    /**
     * 第二次路由   跳转意思
     * 更新
     * @param
     * @param
     * @return
     */
    @RequestMapping(value = "updateByUser")
    public void UpdateUser(
                             @RequestParam(value = "username") String username,
                             @RequestParam(value = "password")String password,
                             @RequestParam(value = "id")String id,PrintWriter out) {
        Integer integer = userService.updateByuser(new User(Integer.parseInt(id),username,password));
       //    修改数据
        if (integer == 1) {
            out.print(1);
        }else {
            out.print(2);
        }

    }
}





